/**
 * 
 */
package com.mustafaiev.tair.cts.facade;

import java.util.List;

import com.mustafaiev.tair.cts.exeptions.DataNotRemovedException;
import com.mustafaiev.tair.cts.exeptions.DataNotStoredException;
import com.mustafaiev.tair.cts.model.BasketsBatch;
import com.mustafaiev.tair.cts.tapestry.dto.BasketsBatchDTO;
import com.mustafaiev.tair.cts.tapestry.dto.BasketsBatchFilterDTO;

/**
 * @author tair
 * 
 */
public interface IBasketsBatchFacade extends ICostTrackingSystemFacade {

	/**
	 * Saves baskets batch into database
	 * 
	 * @param basketsBatch
	 */
	void save(BasketsBatchDTO basketsBatch) throws DataNotStoredException;

	/**
	 * Deletes baskets batch from database
	 * 
	 * @param basketsBatch
	 * @throws DataNotRemovedException
	 */
	void delete(BasketsBatchDTO basketsBatch) throws DataNotRemovedException;

	/**
	 * Retrieves all batches from database
	 * 
	 * @return
	 */
	List<BasketsBatchDTO> retreiveBatches();

	/**
	 * Retrieves batch from databse by passed ID
	 * 
	 * @param batchId
	 * @return {@link BasketsBatch} batch
	 */
	BasketsBatchDTO retrieveBatch(Long batchId);

	/**
	 * Retrieves batches by filter params
	 * 
	 * @param filter
	 * @return filtered batches
	 */
	List<BasketsBatchDTO> retrieveBatchesByFilter(BasketsBatchFilterDTO filter);

}
